(function (windows){
    // 接口对象
    var de = {
        // 网站域名
        web_host: 'https://www.mui_page.pay',
        // 接口域名
        api_host: 'https://api.leizimantan.com',
        // API接口
        api: {
            // 文档接口
            index_document: '/api/Index/document',
            // 登陆接口
            login: '/api/Login/index',
            // 注册接口
            reg: '/api/Login/reg',
            // 忘记密码接口
            forget_passwd: '/api/Login/forget_passwd',
            // 退出登陆接口
            login_logout: '/api/Login/logout',
            // 获取用户信息接口
            user_index: '/api/User/index',
            // 商品列表接口
            goods_index: '/api/Goods/index',
            // 商品详情接口
            goods_detail: '/api/Goods/detail',
            // 加入购物车接口
            order_addcar: '/api/Order/addcar',
            // 购物车商品列表接口
            order_car: '/api/Order/car',
            // 收货地址列表接口
            address_index: '/api/Address/index',
            // 保存收货地址接口
            address_save: '/api/Address/save',
            // 保存默认收货地址接口
            address_set_default: '/api/Address/set_default',
            // 删除收货地址接口
            address_del: '/api/Address/del',

            // 上传附件接口
            file_upload: '/api/File/upload',
            // 上传文件分类接口
            file_type: '/api/File/type',
            // 文件列表接口
            file_index: '/api/File/index',
        },
        created: function (){
            for (var i in this.api) {
                this[i] = this.api_host + this.api[i];
            }
        },
        // ============================== public ==============================
        // 拾取数据
        pickData: function (data, item){
            var request = {};
            for (var i in item) {
                request[item[i]] = data[item[i]];
            }
            return request;
        },
        // 简化跳转方法
        href: function (url){
            window.location.href = url;
        },
        // 查看本地上传文件预览地址
        see_url: function (file){
            return (window.URL || window.webkitURL).createObjectURL(file);
        },
        // 查看本地上传文件预览地址
        file_read: function (querySelect, binary, callback){
            // 选择器
            var file = document.querySelector(querySelect).files[0];
            // 实例化
            var reader = new FileReader();
            reader.onload = function(){
                var res = binary ? window.btoa(this.result) : this.result ;
                callback(res);
            };
            if (binary) {
                reader.readAsBinaryString(file);
            } else {
                reader.readAsDataURL(file);
            }
        },
        // 上传文件
        upload: function ( querySelect , name ){
            var formData = new FormData();
            // 选择器
            var formFile = document.querySelector(querySelect).files;
            // 预览地址
            var urlData = [];
            for (var i = 0; i < formFile.length; i++) {
                // 图片路径
                urlData.push(this.see_url(formFile[i]));
                // FormData追加数据
                formData.append(name, formFile[i]);
            }
            return {
                formData: formData,
                urlData: urlData,
            };
        },
        // 自定义ajax
        ajax: {
            post: function (url, params, callback){
                var xhr = new XMLHttpRequest();
                // 设置超时时间,0表示永不超时
                xhr.timeout = 30;
                // 设置期望的返回数据类型
                xhr.responseType = '';
                // 设置请求方式和请求地址 (第三个参数为是否异步)
                xhr.open('post', url, true);
                // 请求成功
                xhr.onload = function (){
                    if (xhr.status == 200) {
                        callback(xhr.responseText);
                        // console.log('请求成功');
                    }
                }
                // 请求错误
                xhr.onerror = function (){
                    console.log('请求错误');
                }
                // 请求结束
                xhr.onloadend = function (){
                    console.log('请求结束');
                }
                // 请求超时
                xhr.ontimeout = function (){
                    console.log('请求超时');
                }
                xhr.send(params);
            },
        },
        // ============================== public end ==============================
        // 拾取get参数
        get: function ( param ){
            var query = window.location.search.substring(1);
            var vars = query.split("&");
            for (var i = 0; i < vars.length; i++) {
                var pair = vars[i].split("=");
                if(pair[0] == param){
                    return pair[1];
                }
            }
            return(false);
        },
        // 验证登陆的方法
        auth_login: function (){
            var login = window.localStorage.getItem('login');
            if (login) {
                return login;
            }
            return false;
        },
        // 退出登陆
        logout: function (the){
            var login = window.localStorage.getItem('login');
            if (!login) {
                return true;
            }
            // 请求退出
            axios.post(de.login_logout).then(function (data){
                var dd = data.data;
                if (dd.code == 200) {
                    // 清除缓存
                    window.localStorage.removeItem("login");
                    if (typeof the == "object") {
                        de.de_alert(the, true, '成功', dd.info, function (){
                            location.reload();
                        });
                    }
                    location.reload();
                } else {
                    if (typeof the == "object") {
                        de.de_alert(the, true, '失败', dd.info, function (){
                            location.reload();
                        });
                    }
                }
            }).catch(function(error){
                console.log(error);
            });
        },
        de_alert: function ( vue , show , title , msg , callback ){
            vue.de_alert = {
                show: show,
                title: title,
                msg: msg,
                close: callback
            }
        }
    };
    // 放入window全局对象中
    windows.de = de;
    // 初始化
    de.created();
})(window);
